package net.oschina.android.util;

import android.content.Context;
import android.text.TextUtils;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

/**
 * @author HuangWenwei
 *
 * @date 2014年8月24日
 */
public class VolleyRequestQueue {
	
	public static final String TAG = VolleyRequestQueue.class.getSimpleName();
	private static VolleyRequestQueue mInstance;
	private static RequestQueue mRequestQueue;
	private static Context context;

	public VolleyRequestQueue(Context context) {
		this.context = context;
		mRequestQueue = getRequestQueue();
	}
	
	public static synchronized VolleyRequestQueue getInstance(Context context){
		if(mInstance==null)
			mInstance = new VolleyRequestQueue(context);
		return mInstance;
	}
	
	/**
	 * 获取请求队列
	 *2014年8月24日
	 *@return	mRequestQueue
	 */
	public static RequestQueue getRequestQueue() {
		if(mRequestQueue == null)
			mRequestQueue = Volley.newRequestQueue(context.getApplicationContext());
		return mRequestQueue;
	}
	
	/**
	 * 把请求添加到请求队列中
	 *2014年8月24日
	 *@param req
	 */
	public <T> void addToRequestQueue(Request<T>req){
		req.setTag(TAG);
		getRequestQueue().add(req);
	}
	
	public <T> void addToRequestQueue(Request<T>req,String tag){
		req.setTag(TextUtils.isEmpty(tag)?TAG:tag);
		getRequestQueue().add(req);
	}
	
	public void cancelPendingRequest(Object tag){
		if(mRequestQueue!=null)
			mRequestQueue.cancelAll(tag);
	}
}
